package com.ruoyi.training.service;

import java.util.List;
import java.util.Set;

import com.ruoyi.training.domain.Projects;
import com.ruoyi.training.dto.ProjectTreeSelect;

/**
 * 项目管理Service接口
 * 
 * @author hcc
 * @date 2025-09-16
 */
public interface IProjectsService 
{
    /**
     * 查询项目管理
     * 
     * @param projectId 项目管理主键
     * @return 项目管理
     */
    public Projects selectProjectsByProjectId(String projectId);

    /**
     * 查询项目管理列表
     * 
     * @param projects 项目管理
     * @return 项目管理集合
     */
    public List<Projects> selectProjectsList(Projects projects);

    /**
     * 新增项目管理
     * 
     * @param projects 项目管理
     * @return 结果
     */
    public int insertProjects(Projects projects);

    /**
     * 修改项目管理
     * 
     * @param projects 项目管理
     * @return 结果
     */
    public int updateProjects(Projects projects);

    /**
     * 批量删除项目管理
     * 
     * @param projectIds 需要删除的项目管理主键集合
     * @return 结果
     */
    public int deleteProjectsByProjectIds(String[] projectIds);

    /**
     * 删除项目管理信息
     * 
     * @param projectId 项目管理主键
     * @return 结果
     */
    public int deleteProjectsByProjectId(String projectId);
    /**
     * 逻辑删除项目管理信息
     *
     * @param projectId 项目管理主键
     * @return 结果
     */
    public int updateFlagProjects(String projectId);
    /**
     * 通过名称查询项目管理信息
     *
     * @param projectName 项目管理
     * @return 结果
     */
    public Projects selectProjectsByProjectName(String projectName,String pId);
    /**
     * 通过id查询项目子项目未停用数
     *
     * @param projectId 项目管理
     * @return 结果
     */
    public int selectNormalChildrenById(String projectId);

    /**
     * 查询项目管理树结构
     */
    List<ProjectTreeSelect> selectProjectsTreeList(Projects projects);

    /**
     * 获取指定项目及其所有子项目的ID集合（支持多级子项目）
     * @param projectId 项目ID
     * @return 包含当前项目及所有子项目的ID集合
     * lqx
     */
    public Set<String> getAllRelatedProjectIds(String projectId);
}
